package cn.kgc.base.service.impl;

import cn.kgc.base.service.FileService;
import cn.kgc.commons.config.OssFileConfig;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.InputStream;
import java.net.URL;

/**
 * <p></p>
 *
 * @author 李孟鸠
 * @Date: 2022年11月29日8:41
 * 使用OSS进行文件操作
 */
@Service("ossFileService")
public class OssFileServiceImpl implements FileService {
    @Resource
    private OssFileConfig ossFileConfig;
    @Override
    public String upload(MultipartFile file, String userId, String fileName) {
        String bucketName=ossFileConfig.getBucketName();
        String endpoint=ossFileConfig.getEndpoint();
        String accessKey=ossFileConfig.getAccessKeyId();
       String accessSecret=ossFileConfig.getAccessKeySecret();
       String ossHost=ossFileConfig.getOsshost();
       String objectName=ossFileConfig.getObjectName();
        OSS ossClient=null;

        try {
            // 创建OSSClient实例。
            ossClient = new OSSClientBuilder().build(endpoint, accessKey, accessSecret);
            //获得输入流
            InputStream inputStream = file.getInputStream();
            //重新给objectName属性赋值（文件夹的名字+文件的名字） images/pms/123/
            fileName=System.currentTimeMillis()+fileName;
            objectName=objectName+"/"+userId+"/"+fileName;
            //上传文件
            ossClient.putObject(bucketName, objectName, inputStream);
            //ossHost服务器存储图片的路径
            ossHost+=objectName;
        } finally {
            // 关闭OSSClient。
            if (ossClient != null) {
                ossClient.shutdown();
            }
            return ossHost;
        }


    }
}
